Skip to content

ci: publish the runtime image to GHCR - #5

Merged
TeeJS merged 1 commit into
mainfrom
fable/docker-publish
Sep 2, 2026
Merged

ci: publish the runtime image to GHCR#5
TeeJS merged 1 commit into
mainfrom
fable/docker-publish

Conversation

@TeeJS

@TeeJS TeeJS commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Why

Hosts such as Unraid pull a registry image rather than building locally, and this repo had no workflow that produced one. Follow-up to the four hardening PRs (#1 to #4) from Agent Room AM-PJ5JXM25UMCHU2UFJHXFSWBN9J.

What

  • .github/workflows/docker.yml: builds packages/context/Dockerfile and pushes to ghcr.io/teejs/context.
  • Every push to main that touches the package refreshes main and a sha-<short> tag. latest and <version> move only when the package version changes, which is the "Version Packages" merge the release workflow publishes from, so the image and the npm release come from the same commit. workflow_dispatch with tag_release forces the release tags.
  • No tag trigger on purpose: the release workflow pushes tags with GITHUB_TOKEN, and GitHub never starts another workflow from those pushes.
  • Push uses oci-mediatypes=false with provenance and sbom off: Unraid's update check does not accept a bare OCI manifest and trips over attestation entries, and a single-platform buildx push emits exactly that unless told otherwise.
  • README documents the image and tags.

After merge

  1. The merge itself triggers the first build (main + sha-* tags only).
  2. Run the workflow manually with tag_release checked to publish latest and 1.2.4.
  3. The GHCR package is private on first push. Set it to public in the package settings, or Unraid cannot pull it without a docker login on the host.
  4. Verify the manifest media type with an anonymous token before pointing Unraid at it.

🤖 Generated with Claude Code

Hosts such as Unraid pull a registry image rather than building locally,
and this repo had no workflow that produced one.

Every push to main that touches the package refreshes `main` and a
`sha-*` tag. `latest` and the version tag move only when the package
version changes, which is the "Version Packages" merge the release
workflow publishes from, so the image and the npm release come from the
same commit. A manual dispatch can force the release tags.

The push uses Docker manifest media types with attestations disabled:
Unraid's update check does not accept a bare OCI manifest and trips over
attestation entries, and a single-platform buildx push emits exactly
that unless told otherwise.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@TeeJS
TeeJS merged commit 345acfb into main Sep 2, 2026
3 checks passed
@TeeJS
TeeJS deleted the fable/docker-publish branch September 2, 2026 17:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant